package com.material.factory.mapper;

import java.util.List;
import com.material.factory.domain.FactoryReceivingPlan;
import com.material.factory.params.FactoryReceivingPlanParams;
import com.material.factory.params.FactoryReceivingPlanQuery;
import com.material.factory.vo.FactoryReceivingPlanDataVo;
import com.material.factory.vo.FactoryReceivingPlanListVo;
import com.material.factory.vo.FactoryReceivingPlanVo;
import org.apache.ibatis.annotations.Param;

/**
 * 工厂收货计划Mapper接口
 * 
 * @author ruoyi
 * @date 2025-05-07
 */
public interface FactoryReceivingPlanMapper 
{
    /**
     * 查询工厂收货计划
     * 
     * @param id 工厂收货计划主键
     * @return 工厂收货计划
     */
    public FactoryReceivingPlan selectFactoryReceivingPlanById(Long id);

    /**
     * 查询工厂收货计划列表
     * 
     * @param factoryReceivingPlan 工厂收货计划
     * @return 工厂收货计划集合
     */
    public List<FactoryReceivingPlan> selectFactoryReceivingPlanList(FactoryReceivingPlan factoryReceivingPlan);

    /**
     * 新增工厂收货计划
     * 
     * @param factoryReceivingPlan 工厂收货计划
     * @return 结果
     */
    public int insertFactoryReceivingPlan(FactoryReceivingPlan factoryReceivingPlan);

    /**
     * 修改工厂收货计划
     * 
     * @param factoryReceivingPlan 工厂收货计划
     * @return 结果
     */
    public int updateFactoryReceivingPlan(FactoryReceivingPlan factoryReceivingPlan);

    /**
     * 删除工厂收货计划
     * 
     * @param id 工厂收货计划主键
     * @return 结果
     */
    public int deleteFactoryReceivingPlanById(Long id);

    /**
     * 批量删除工厂收货计划
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteFactoryReceivingPlanByIds(Long[] ids);

    List<FactoryReceivingPlanVo> selectFactoryReceivingPlanDateList(FactoryReceivingPlanParams factoryReceivingPlan);

    List<FactoryReceivingPlanDataVo> selectGroupList(@Param("factoryId") Long factoryId, @Param("dateList")List<String> dateList);

    FactoryReceivingPlan selectFactoryReceivingPlan(@Param("factoryId") Long factoryId, @Param("fuelId")Long fuelId, @Param("reservationDate")String reservationDate);

    List<FactoryReceivingPlanListVo> selectFactoryReceivingPlanPageList(FactoryReceivingPlanQuery factoryReceivingPlan);

    int batchInsertFactoryReceivingPlan(List<FactoryReceivingPlan> list);
}
